package com.bdqn.mapper;

import com.bdqn.pojo.Menu;
import com.bdqn.pojo.Role;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface MenuMapper {
    /**
     * 根据用户编号获取用户的所有父菜单
     * @param uid：用户ID
     * @return 菜单集合
     */
    List<Menu> selectParentMenuByUid(int uid);

    /**
     * 根据用户编号和父菜单编号获取用户父菜单下所有的子菜单
     * @param uid：用户ID
     * @param pid：
     * @return
     */
    List<Menu> selectChildMenusByUidAndPid(@Param("uid") int uid, @Param("pid") int pid);

    /**
     * 根据名称模糊查询菜单
     */
    List<Menu> selectByName(String name);

    @Insert("INSERT INTO SYS_MENUS (PARENT_ID, NAME, DESCN, IMAGE_URL, LINK_URL, STATUS) " +
            "VALUES (#{parentId}, #{name}, #{descn},#{imageUrl},#{linkUrl},#{status})")
    int add(Menu menu);

    @Select("select * from sys_menu")
    List<Menu> selectAll();

    /**
     * 查询所有父菜单
     */
    @Select("select * from sys_menu where parent_ids  is null")
    List<Menu> selectParentMenus();

    /**
     * 根据父菜单编号查询所有的子菜单
     */
    @Select("select * from sys_menu where parent_id=#{pid}")
    List<Menu> selectChildMenusByPid(int pid);


    /**
     * 根据角色编号查询父菜单
     */
    List<Menu> selectByRid(int rid);

    /**
     * 根据角色编号和父菜单，查询子菜单
     */
    List<Menu> selectChildMenusByRidAndPid(@Param("rid") int rid,@Param("pid") int pid);
}
